Advertising network layer reachability information specifying a quality of service for an identified network flow

ABSTRACT

Methods, apparatus and articles of manufacture for advertising network layer reachability information specifying a quality of service for an identified network flow are disclosed. Example methods disclosed herein to specify quality of service for network flows include receiving network layer reachability information including a first quality of service class specified for a first network flow, the network layer reachability information having been advertised by a first network element that is to receive the first network flow. Such example methods can also include updating an incoming packet determined to belong to the first network flow to indicate that the incoming packet belongs to the first quality of service class, the incoming packet being received from a second network element. Such example methods can further include, after updating the incoming packet, routing the incoming packet towards the first network element.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of and claims priority to U.S. patentapplication Ser. No. 13/707,089, filed Dec. 6, 2012, by Penn et al.,entitled “Advertising Network Layer Reachability Information Specifyinga Quality of Service for an Identified Network Flow”. The contents ofeach of the foregoing is hereby incorporated by reference into thisapplication as if set forth herein in full.

FIELD OF THE DISCLOSURE

This disclosure relates generally to networking and, more particularly,to advertising network layer reachability information specifying aquality of service for an identified network flow.

BACKGROUND

In modern communication networks, circuit switched trunks are stillrelied upon to exchange voice traffic between telecommunication serviceproviders. However, given the prevalence of voice over Internet protocol(VoIP) services being offered by these same service providers, it isexpected that Internet protocol (IP) peering connections will replacethese circuit switched trunks for exchanging voice traffic betweenservice providers. However, today's IP peering connections betweenservice providers are generally limited to supporting a best-effortquality of service (QoS), which may become inadequate for VoIP servicesas the amount of voice traffic exchanged over these IP connectionsincreases. As an alternative, direct connections supporting a higher QoScould be established between service providers for the purpose ofexchanging voice traffic. However, some service providers may lack theinfrastructure to implement such direct connections, or be unwilling tocommit resources to implementing these direct connections given thatvoice traffic may account for just a small fraction of the provider'soverall traffic and, thus, the provider's overall revenue.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an example communication network supportingadvertising of network layer reachability information specifying QoS foridentified network flows as disclosed herein.

FIG. 2 is a message sequence diagram illustrating example control planesignaling to implement the advertising of network layer reachabilityinformation specifying a QoS for an identified network flow in theexample communication network of FIG. 1.

FIG. 3 is a message sequence diagram illustrating communication of anexample data plane flow having a QoS advertised via the example controlplane signaling of FIG. 2.

FIG. 4 is a block diagram of an example provider edge router that may beused to implement the example communication network of FIG. 1.

FIG. 5 is a block diagram of an example Internet gateway router that maybe used to implement the example communication network of FIG. 1.

FIG. 6 is a flowchart representative of example machine readableinstructions that may be executed to cause the example provider edgerouter of FIG. 4 to advertise network layer reachability informationspecifying network flow QoS in the example communication network of FIG.1.

FIG. 7 is a flowchart representative of example machine readableinstructions that may be executed to cause the example provider edgerouter of FIG. 4 to process received network layer reachabilityinformation specifying network flow QoS in the example communicationnetwork of FIG. 1.

FIG. 8 is a flowchart representative of example machine readableinstructions that may be executed to cause the example provider edgerouter of FIG. 4 to route network packets in the example communicationnetwork of FIG. 1 according to received network layer reachabilityinformation specifying network flow QoS.

FIG. 9 is a flowchart representative of example machine readableinstructions that may be executed to cause the example Internet gatewayrouter of FIG. 5 to process received network layer reachabilityinformation specifying network flow QoS in the example communicationnetwork of FIG. 1.

FIG. 10 is a flowchart representative of example machine readableinstructions that may be executed to cause the example Internet gatewayrouter of FIG. 5 to route network packets in the example communicationnetwork of FIG. 1 according to received network layer reachabilityinformation specifying network flow QoS.

FIG. 11 is a block diagram of an example processing system that mayexecute the example machine readable instructions of FIGS. 6-9 and/or 10to implement the example provider edge router of FIG. 4, the exampleInternet gateway router of FIG. 5 and/or the example communicationnetwork of FIG. 1.

Wherever possible, the same reference numbers will be used throughoutthe drawing(s) and accompanying written description to refer to the sameor like parts, elements, operations, etc.

DETAILED DESCRIPTION

Methods, apparatus and articles of manufacture (e.g., storage media) foradvertising network layer reachability information specifying a QoS foran identified network flow are disclosed herein. Example methodsdisclosed herein to specify QoS for network flows include receivingnetwork layer reachability information including a first QoS classspecified for a first network flow. The network layer reachabilityinformation, in such examples, is advertised by a first network elementthat is to receive the first network flow. Such example methods alsoinclude, updating an incoming packet determined to belong to the firstnetwork flow to indicate that the incoming packet belongs to the firstQoS class, the incoming packet being received from a second networkelement. Such example methods further include, after updating theincoming packet, routing the incoming packet towards the first networkelement.

In some examples, the network layer reachability information can bereceived in a border gateway protocol update message. Additionally oralternatively, in some examples, the network layer reachabilityinformation further includes a destination prefix and a protocol type toidentify the first network flow. In such examples, the destinationprefix represents a network address that is reachable from the firstnetwork element. For example, the first network element may correspondto a first provider edge router, and the network address represented bythe destination prefix may be associated with a first network borderelement that is reachable via the first provider edge router andservicing a first group of network endpoints that is to receive thefirst network flow. In some such examples, the first QoS class isspecified for the first network flow when the first network borderelement is homed to the first provider edge router.

In some example methods, updating the incoming packet to indicate thatthe incoming packet belongs to the first QoS class involves changingbits in the incoming packet to match a first value representing thefirst QoS class. For example, if the first network element belongs to afirst autonomous network, the second network element belongs to a secondautonomous network, and the incoming packet is received from the secondnetwork element at a third network element belonging to a thirdautonomous network, then the first value may represent the first QoSclass in the third autonomous network. Furthermore, in some examples,this first value may be different from respective values representingthe first QoS class in the first and second autonomous networks.

These and other example methods, apparatus, systems and articles ofmanufacture (e.g., physical storage media) to implement and utilizeadvertising of network layer reachability information specifying a QoSfor an identified network flow are disclosed in greater detail below.

As noted above, existing IP peering connections between serviceproviders are generally limited to supporting a best-effort QoS, whichmay be inadequate for the VoIP traffic expected to be supported in thefuture. Using direct connections between service providers to meet adesired QoS may be an undesirable alternative to the existing, besteffort IP peering connections. Although there are existing techniquesfor providing higher QoS over IP peering connections, such techniqueshave drawbacks that may deter implementation in a large-scalecommunication network including multiple telecommunication providers.

For example, one such existing QoS technique is based on the resourcereservation protocol (RSVP), which is specified in the InternetEngineering Task Force (IETF) Request for Comments (RFC) document RFC2205. RSVP takes the approach of reserving resources for separate flowsin a routing path, and relies on RSVP-enabled routers that can examinepacket headers and maintain a reservation state for each flow. As such,RSVP can consume significant network resources as the number of flowsutilizing RSVP increases, thereby limiting the ability of RSVP to scaleto support the amount of VoIP traffic flows expected in the future.

Another existing QoS technique is based on the differentiated services(DiffServ) approach for providing QoS over IP connections. Unlike RSVP,DiffSery does not reserve resources but, instead, uses a DiffSery CodePoint (DSCP) to indicate packet priority and determine per-hopforwarding behavior. For IP connections, the DSCP is implemented by thetype of service (TOS) bit field in IP version 4 (IPV4) packets, or theTraffic Class bit field in IPV6 packets. Use of DiffSery to provide aspecified QoS involves proper marking of the DSCP bits at theorigination network node, and also ensuring that these markings arehonored (and possibly translated) across network boundaries. As such,DiffSery may require the use of separate negotiation signaling betweenInternet service providers (ISPs) to establish QoS marking agreementsand packet remarking procedures. As such, DiffSery is a static approachfor providing QoS and, thus, like RSVP, may have limited ability toscale to support the amount of VoIP traffic flows expected in thefuture. Moreover, DiffSery may lack flexibility and robustness to adaptto network re-provisioning changes, network failures, etc.

Unlike the static and inflexible treatment of QoS by RSVP and DiffServ,advertising network layer reachability information specifying quality ofservice for an identified network flow as disclosed herein can achievereal-time, scalable and flexible QoS treatment of traffic over IPpeering connections between service providers. For example, and asdescribed in greater detail below, network layer reachabilityinformation (NLRI) including a flow specification (flowspec) for anidentified network flow is augmented to include a QoS class specifiedfor the identified network flow. Such flowspec NLRI routing data, whichincludes the QoS class specification, is advertised from a downstreamrouter that is to receive the network flow to upstream router(s) thatpropagate the flowspec NLRI routing data including the QoS classinformation. The upstream routers use the received flowspec NLRI routingdata to construct packet filters for filtering received network packets,thereby enabling the packets to be routed according to their respectiveQoS classes as specified in the received flowspec NLRI routing data.Using flowspec NLRI routing data to advertise QoS classes for identifiednetwork flow also enables the QoS class information for a particularnetwork flow to be updated in real-time via a routing update, such asvia a border gateway protocol (BGP) UPDATE message. As such, the QoS fora particular network flow can be changed in real-time without involvingseparate QoS negotiation signaling between ISPs. Accordingly,advertising network layer reachability information specifying quality ofservice for an identified network flow as disclosed herein is a scalableand flexible approach for QoS treatment of VoIP traffic over IP peeringconnections between service providers.

Turning to the figures, a block diagram of an example communicationnetwork 100 supporting advertising of network layer reachabilityinformation specifying QoS for identified network flows as disclosedherein is illustrated in FIG. 1. The communication network 100 of theillustrated example includes three (3) example autonomous networks105A-C, some or all of which may correspond to different serviceproviders or the same service provider. In the illustrated example ofFIG. 1, the autonomous networks 105A-C support the routing of IPtraffic, which may include signaling traffic, such as session initiationprotocol (SIP) traffic, and media traffic, such as real-time transportprotocol (RTP) traffic. For example, the RTP traffic may include VoIPtraffic for voice calls carried by the autonomous networks 105A-C.

The autonomous network 105A of the example communication network 100includes one or more edge routers to interconnect with one or morecustomer network(s) and/or other network(s) external to the autonomousnetwork 105A. The edge router(s) of the autonomous network 105A can beimplemented by any type(s) and/or number of network elements, such as anexample provider edge (PE) router 110A as illustrated in the example ofFIG. 1, and/or any other type(s) and/or number of network elements, suchas one or more routers, gateways, bridges, servers, etc. For example, inthe communication network 100 of FIG. 1, the PE router 110Ainterconnects with or, more generally, is in communication with, anexample border element 115A that provides access to one or more groupsof network addresses corresponding to one or more customer endpointsthat are reachable via the border element 115A. The border element 115Acan be implemented by any type(s) and/or number or network elements,such as one or more customer edge (CE) routers, session bordercontrollers (SBCs), gateways, bridges (e.g., that have layer-3 routingcapabilities), servers, etc.

Similarly, the autonomous network 105C of the example communicationnetwork 100 includes one or more edge routers to interconnect with oneor more customer network(s) and/or other network(s) external to theautonomous network 105C. Like the edge router(s) of the autonomousnetwork 105A, the edge router(s) of the autonomous network 105C can beimplemented by any type(s) and/or number of network elements, such as anexample PE router 110C as illustrated in the example of FIG. 1, and/orany other type(s) and/or number of network elements, such as one or morerouters, gateways, bridges, servers, etc. For example, in thecommunication network 100 of FIG. 1, the PE router 110C interconnectswith or, more generally, is in communication with, an example borderelement 115C that provides access to one or more groups of networkaddresses corresponding to one or more customer endpoints that arereachable via the border element 115C. Like the border element 115A, theborder element 115C can be implemented by any type(s) and/or number ornetwork elements, such as one or more customer edge (CE) routers,session border controllers (SBCs), gateways, bridges, servers, etc.

The autonomous networks 105A-C of the example communication network 100also include gateway routers to interconnect the autonomous networks105A-C to enable network traffic, such as routing information, IPtraffic, etc., to be exchanged among the autonomous networks 105A-C. Thegateway router(s) of the autonomous networks 105A-C can be implementedby any type(s) and/or number of network elements, such as the exampleInternet gateway routers (IGRs) 120A, 120B1, 120B2 and 120C illustratedin the example of FIG. 1, and/or any other type(s) and/or number ofnetwork elements, such as one or more autonomous system boundary routers(ASBRs), area border routers (ABRs), gateways, bridges, servers, etc.For example, in the communication network 100 of FIG. 1, the exampleIGRs 120A and 120B1 interconnect or, more generally, enablecommunication between, the example autonomous network 105A and 105B(e.g., via one or more intervening networks, which are not shown in thefigure). Similarly, the example IGRs 120B2 and 120C interconnect or,more generally, enable communication between, the example autonomousnetwork 105B and 105C (e.g., via one or more intervening networks, whichare not shown in the figure).

In the example communication network 100 of FIG. 1, the PE routers110A-B and the IGRs 120A, 120B1, 120B2 and 120C implement advertising offlowspec NLRI data specifying QoS classes for identified network flowsto enable real-time, scalable QoS treatment of network packets exchangedbetween, for example, the border elements 115A and 115C. The followingis an example problem that can be solved by the advertisement offlowspec NLRI data specifying QoS classes for identified network flowsin the example communication network 100 of FIG. 1. Consider an examplescenario in which the autonomous networks 105A and 105C of FIG. 1provide VoIP service to customer endpoints served by the respectiveborder elements 115A and 115C. As such, signaling traffic (e.g., SIPtraffic) and media traffic (e.g., RTP traffic) flow between the networks105A and 105C and their respective customer endpoints via the respectiveborder elements 115A and 115C, which may be implemented by SBCs in thecase of a VoIP service. Further, assume that a customer of network 105Aplaces a voice call to a customer of network 105C. Because networks 105Aand 105C use VoIP to handle voice calls, it would be desirable ifnetwork 105A could route the call to network 105C as IP traffic insteadof as circuit switched voice traffic carried by the public switchedtelephone network (PSTN), as may be done today for voice trafficexchanged between different telecommunications networks.

However, in the illustrated example of FIG. 1, there is no direct IPconnection between networks 105A and C. Instead, networks 105A and 105Care interconnected by (e.g., are peered with and/or purchase transitfrom) the autonomous network 105B. Although it may be assumed that thenetworks 105A and C can ensure that adequate QoS treatment is providedfor the VoIP call within their respective networks, in the past, the IPpeering connections between networks 105A and 105B, and between networks105B and 105C, have been limited to providing a best effort QoStreatment of data exchanged between networks. As such, if congestionoccurs on the interface between networks 105A and 105B, the interfacebetween networks 105B and 105C, or both, VoIP packets for voice callsbetween the customers of networks 105A and 105C may be lost orunacceptably delayed because, under a best effort treatment, the VoIPpackets receive no priority over any other traffic exchanged over thoseinternetwork interfaces.

The advertisement of flowspec NLRI data specifying QoS classes foridentified network flows, as disclosed herein, can solve the problem ofensuring proper QoS treatment of traffic exchanged between differentnetworks, such as between the autonomous networks 105A and 105B, andbetween the autonomous networks 105B and 105C, of FIG. 1. As describedin greater detail below, the border routers in the communication network100, such as the PE routers 110A-C and the IGRs 120A-C, advertise andpropagate routing information that identifies network flows and the QoSclasses for the network flows identified in the routing information. Forexample, to advertise and propagate such routing information, the IGRs120A-C can employ the external border gateway protocol (eBGP), whichcrosses autonomous system network (ASN) boundaries, and which isaugmented as disclosed herein to specify the QoS treatment of real timetraffic flows identified based on (i) the destination prefixes reachableby the border elements 115A and 115C that are to receive the flows, andalso (ii) the protocol (e.g., RTP) that is employed by the flow. Thissolution of advertising flowspec NLRI data specifying QoS classes foridentified network flows is dynamic and differs from other approaches inthat, for example, the request for QoS treatment is initiated, not bythe network element originating the flow, but by the network elementreceiving the flow. Furthermore, unlike RSVP, the advertisement offlowspec NLRI data specifying QoS classes for identified network flows,as disclosed herein, does not require the network elements to expendresources maintaining flow states.

With the foregoing in mind, an example message sequence diagram 200illustrating example control plane signaling to implement theadvertising of flowspec NLRI data specifying a QoS class for anidentified network flow in the example communication network 100 of FIG.1 is illustrated in FIG. 2. With reference to FIGS. 1 and 2, the messagesequence diagram 200 begins with the PE router 110C advertising flowspecNLRI data specifying a QoS class for network packets havingcharacteristics that match an identified network flow capable of beingreceived by the border element 115C. For example, the border element115C may correspond to an SBC configured to provide VoIP service to agroup of network addresses in a customer network served by theautonomous network 105C. In such an example, the border element 115Callows the service provider of the autonomous network 105C to hide thenetwork addresses of the actual customer endpoints that are to receivethe VoIP service behind the border element 115C. Accordingly, VoIPtraffic destined to the customer endpoints behind the border elements115C will have a destination address corresponding to the networkaddress (e.g., IP network prefix) of the border element 115C. Thus, inthe illustrated example, the PE router 110C may advertise flowspec NLRIdata specifying a particular QoS class for a network flow thatcorresponds to the VoIP traffic that is to be received by the borderelement 115C and, thus, has a destination address corresponding to thenetwork address of the border element 115C. By using the network addressof the border element 115C, the network flow can be specified by adestination address that is relatively static, rather than using thepotentially numerous, dynamic addresses associated with the customerendpoints being served by, and hidden behind, the border element 115C,which can further enhance the scalability of the methods, apparatus andarticles of manufacture disclosed herein.

In the illustrated example of FIG. 2, to advertise flowspec NLRI dataspecifying a QoS class for an identified network flow that is receivableby the border element 115C, the PE router 110C sends an example routingmessage 205 that includes network layer reachability informationspecifying a particular network flow and including a QoS class specifiedfor the particular network flow. For example, the routing message 205can be implemented by a BGP UPDATE message including NLRI dataidentifying a network prefix (e.g., a group of network addresses) thatis reachable via the PE router 110C. In the illustrated example, thenetwork prefix (e.g., the group of network addresses) identified in theNLRI data of the routing message 205 corresponds to the network prefixof the border element 115C. Additionally, a BGP UPDATE message used toimplement the routing message 205 can identify a particular network flowusing, for example, the flow specification rules defined in IETF RFC5575. For example, the routing message 205 can identify a particularnetwork flow by a combination of the network prefix (e.g., associatedwith the border element 115C) identified in the NLRI data, whichrepresents the destination of the particular flow, and a protocol type,which identifies the type of protocol used to convey network packetsincluded in the network flow. Accordingly, the flowspec NLRI dataprovided in the routing message 205 can include the NLRI dataidentifying the destination network prefix for a particular networkflow, and the protocol type specified for the flow.

However, unlike prior routing messages, such as prior BGP UPDATEmessages, the flowspec NLRI data included in the routing message 205 isaugmented to include a QoS class that has been specified for theparticular network flow identified in the message. The QoS class for aparticular network flow receivable by the border element 115C and, thus,receivable at the PE router 110C, can be specified, for example, duringa configuration procedure that occurs when the border element 115C isfirst homed to the PE router 110C, and/or via configuration informationprovided to the PE router 110C via a configuration interface (notshown), control signaling received from a network management system (notshown), etc. Example protocol types can include, but are not limited to,protocols such as RTP, SIP, etc. Example QoS classes can include, butare not limited to, classes such as “Real Time,” “Best Effort,” etc. Forexample, a routing message 205 that is to advertise flowspec NLRI dataspecifying a QoS class that is better than best-effort for a VoIPtraffic flow to be received by the border element 115C could include thefollowing flowspec NLRI and QoS class information:

-   -   NLRI network prefix=an IP network prefix of the border element        115C (e.g., which is to receive the VoIP traffic for customer        endpoint(s) served by the border element 115C);    -   Protocol type=RTP; and    -   QoS class setting=Real Time.

In the illustrated examples of FIGS. 1 and 2, the PE router 110C sendsthe routing message 205 to its next-hop upstream router(s), such as theIGR 120C, to advertise, in the autonomous network 105C, flowspec NLRIdata specifying a QoS class for an identified network flow having the PErouter 110C as a destination. In response to receiving the routingmessage 205, the IGR 120C performs an example procedure 210 to processthe received routing message 205. For example, the procedure 210 maystore the flowspec NLRI data and specified QoS class for the networkflow identified in the routing message. Additionally or alternatively,the procedure 210 may construct a packet filter for use in filteringreceived packets to identify packets included in the identified networkflow and to route such packets according to the specified QoS.

In the illustrated example of FIGS. 1 and 2, the flowspec NLRI data andthe specified QoS information advertised by the PE router 110C via therouting message 205 continues to be propagated upstream from the IGR120C to its next-hop upstream router(s), such as the IGR 120B2, via anexample routing message 215, thereby making this information availableto the autonomous network 105B. The routing message 215 may be similarto, or different from, the routing message 205. Similarly, the IGR 120B2propagates this flowspec NLRI data and the specified QoS information toits next-hop upstream router(s), such as the IGR 120B1, via an examplerouting message 220, which may be similar to, or different from, therouting messages 205-210. The propagation of this flowspec NLRI data andthe specified QoS information continues upstream in an example routingmessage 225 sent by the IGR 120B1 to its next-hop upstream router(s),such as the IGR 120A (thereby providing this information to theautonomous network 105A), and then in an example routing message 230sent by the IGR 120A to its next-hop upstream router(s), such as the PErouter 110A. The routing messages 225 and 230 may be similar to, ordifferent from, the other routing messages 205, 215 and/or 220. In thisway, the QoS class specified for the network flow identified in theflowspec NLRI data advertised by the PE 120C is propagated and providedto the different autonomous networks 105A, 105B and 105C. Additionally,in the illustrated example of FIGS. 1 and 2, each of the routersreceiving the flowspec NLRI data and the specified QoS informationadvertised by the PE router 110C performs a respective procedure tostore the data and construct a packet filter to filter and route packetsassociated with the identified network flow according to the specifiedQoS. For example, the IGR 120B2 performs an example procedure 235, theIGR 120B1 performs and example procedure 240, the IGR 120A performs anexample procedure 245, and the example PE router 110A performs anexample procedure 250, each of which may be similar to the procedure 210performed by the IGR 120C.

An example message sequence diagram 300 illustrating communication of anexample data plane flow having a QoS advertised via the example controlplane signaling of FIG. 2 in the example communication network 100 ofFIG. 1 is illustrated in FIG. 3. The example message sequence diagram300 begins with the PE router 110A receiving an example network packet305 and performing an example procedure 310 to filter the network packet305 using the packet filter constructed via the procedure 250. Thefiltering procedure 310 processes the destination address and protocoltype of the network packet 305 to determine whether the destinationaddress and protocol type are associated with a network flow for which aQoS class was specified in flowspec NLRI data that was received via theexample control plane signaling of FIG. 2 (e.g., via the routing message230). If the network packet 305 is not associated with any specifiedQoS, then the network packet 305 may be associated with a default QoS,such as a best-effort QoS.

However, in the illustrated example of FIG. 3, the network packet 305has a destination address that matches a network prefix (or destinationaddress) included in flowspec NLRI data advertised by the PE router 110Cand stored at the PE router 110A. Furthermore, the network packet 305has a protocol type that matches the protocol type included in this NLRIdata. Accordingly, PE router 110A (e.g., via the process 310) determinesthat the network packet 305 is associated with the network flowidentified by the network prefix (or destination address) and protocoltype included in the flowspec NLRI data advertised by the PE router 110Cand stored at the PE router 110A. As such, the PE router 110A (e.g., viathe process 310) further associates the network packet 305 with the QoSclass included in the flowspec NLRI data advertised by the PE router110C and stored at the PE router 110A. For example, referring to theexample of FIG. 2 described above, if the network packet 305 has adestination address that corresponds to the network prefix of the borderelement 115C, and a protocol type of RTP, then according to the flowspecNLRI data advertised by the PE router 110A via the routing message 205A,the PE router 110A may associate the network packet 305 with a real-timeQoS class.

After associating the network packet 305 with a QoS class, the PE router110A (e.g., via the procedure 310) further processes the network packet305 to enable routing of the packet according to its QoS class. Forexample, the PE router 110A may set and/or update a QoS bit fieldincluded in the packet 305 to a value used in the autonomous network105A to represent the particular QoS class associated with the networkpacket 305. For example, the PE router 110A (e.g., via the process 310)may set/update the DSCP or TOS bits of the network packet 305 to anappropriate QoS value if the packet is an IPV4 or IPV6 packet, orset/update the experiment (EXP) bits of the network packet 305 to anappropriate QoS value if the packet is an multiprotocol label switching(MPLS) packet, etc. This QoS value may then be evaluated by downstreamnetwork elements in the autonomous network 105A to enable the proper QoStreatment of the network packet 305.

Additionally or alternatively, in some examples, the PE router 110Aincludes one or more routing queues used to store and forward packetshaving different qualities of service. In such examples, the PE router110A (e.g., via the process 310) can assign the network packet 305 to anappropriate routing queue (e.g., a best-effort queue, a real-time queue,etc.) that is associated with the QoS class that was specified for thenetwork packet 305 according to the advertised flowspec NLRI data. Inthe illustrated example, the PE router 110A then routes the networkpacket 305, which is represented as network packet 315 to indicate thatthe packet has been updated to include a QoS value representing thepacket's specified QoS class, to its downstream routers, which includesthe IGR 120A in the illustrated example.

In the illustrated example of FIGS. 1 and 3, the IGR 120A receives thenetwork packet 315 and performs a packet filtering and update procedure320 similar to the procedure 310. However, the packet filtering andupdate procedure 320 performed by the IGR 120A uses the packet filterconstructed via the procedure 245 based on the flowspec NLRI data andspecified QoS class that was received via the example control planesignaling of FIG. 2 (e.g., via the routing message 225). In theillustrated example, the IGR 120A then routes the network packet 315,which is represented as network packet 325 to indicate that the packetmay have been updated via the process 320 to include an updated QoSvalue representing the packet's specified QoS class, to its downstreamrouters, which includes the IGR 120B1 in the illustrated example.

In the illustrated example of FIGS. 1 and 3, the IGR 120B1 receives thenetwork packet 325 and performs a packet filtering and update procedure330 similar to the procedures 310 and 320. However, the packet filteringand update procedure 330 performed by the IGR 120B1 uses the packetfilter constructed via the procedure 240 based on the flowspec NLRI dataand specified QoS class that was received via the example control planesignaling of FIG. 2 (e.g., via the routing message 220). In theillustrated example, the IGR 120B1 then routes the network packet 325,which is represented as network packet 335 to indicate that the packetmay have been updated via the process 320 to include an updated QoSvalue used in the autonomous network 105B to represent the packet'sspecified QoS class, to its downstream routers, which includes the IGR120B2 in the illustrated example. In some examples, the QoS value usedto represent a particular QoS class in one autonomous network, such asthe autonomous network 105A, may be different from the QoS value used torepresent this same QoS class in another autonomous network, such as theautonomous network 105A.

In the illustrated example of FIGS. 1 and 3, the IGR 120B2 receives thenetwork packet 335 and performs a packet filtering and update procedure340 similar to the procedures 310, 320 and 330. However, the packetfiltering and update procedure 340 performed by the IGR 120B1 uses thepacket filter constructed via the procedure 235 based on the flowspecNLRI data and specified QoS class that was received via the examplecontrol plane signaling of FIG. 2 (e.g., via the routing message 215).In the illustrated example, the IGR 120B2 then routes the network packet335, which is represented as network packet 345 to indicate that thepacket may have been updated via the process 340 to include an updatedQoS value representing the packet's specified QoS class, to itsdownstream routers, which includes the IGR 120C in the illustratedexample.

In the illustrated example of FIGS. 1 and 3, the IGR 120C receives thenetwork packet 345 and performs a packet filtering and update procedure350 similar to the procedures 310, 320, 330 and 340. However, the packetfiltering and update procedure 350 performed by the IGR 120C uses thepacket filter constructed via the procedure 210 based on the flowspecNLRI data and specified QoS class that was received via the examplecontrol plane signaling of FIG. 2 (e.g., via the routing message 205).In the illustrated example, the IGR 120C then routes the network packet345, which is represented as network packet 355 to indicate that thepacket may have been updated via the process 350 to include an updatedQoS value used in the autonomous network 105C to represent the packet'sspecified QoS class, to its downstream routers, which includes the PErouter 110C in the illustrated example. In some examples, the QoS valueused to represent a particular QoS class in autonomous network 105C maybe different from the QoS value(s) used to represent this same QoS classin the autonomous network 105A and/or 105B.

In the illustrated example of FIGS. 1 and 3, the PE router 110C receivesthe network packet 355 and routes the packet based on its destinationaddress to the appropriate recipient. For example, if the destinationaddress of the network packet 355 is an address associated with theborder element 115C, then the PE router 110C routes the network packet355 to the border element 115C. Thus, the examples of FIGS. 1-3demonstrate that end-to-end internetwork (or intercarrier,interprovider, etc.) QoS treatment across IP peering connections can beachieved using the advertising of flowspec NLRI data specifying QoSclasses for identified flows, as disclosed herein.

Although the previous examples have focused on the QoS treatment of VoIPdata exchanged in the example communication network 100 of FIG. 1, theadvertising of flowspec NLRI data specifying QoS classes for identifiednetwork flows as disclosed herein is not limited thereto. For example,advertisement of flowspec NLRI data specifying QoS classes foridentified network flows, as disclosed herein, can be used incommunication networks having any number and/or types of differentnetworks, network elements, PE routers, IGRs, border elements, etc.Additionally or alternatively, the QoS classes for identified networkflows can be advertised in other types of routing information propagatedusing other type(s) of routing protocols.

A block diagram of an example PE router 400 that may be used toimplement the PE routers 110A and/or 110B of FIGS. 1-3 is illustrated inFIG. 4. The PE router 400 of FIG. 4 includes an example networktransceiver 405 to send and receive data via a communication network,such as the autonomous networks 105A, 105B and/or 105C. As such, thenetwork transceiver 405 can be implemented by any type of datatransceiver technology capable of interfacing with the communicationnetwork via which the PE router 400 is to send and receive data.

The PE router 400 of FIG. 4 also includes an example QoS classifier 410to obtain QoS classification information for network flows to bereceived by network elements (such as the border element 115C) that arereachable via the PE router 400. For example, the QoS classifier 410 mayreceive information specifying a QoS class for a particular network flowduring a configuration procedure that occurs when the reachable networkelement (such as the border element 115C) is initially homed to the PErouter 400 (e.g., when the reachable network element, such as the borderelement 115C, is initially configured to communicate with and obtainnetwork access from the PE router 400). Additionally or alternatively,the QoS classifier 410 may receive information specifying a QoS classfor a particular network flow that is provided by, for example, anadministrator via a configuration interface of the PE router 400 and/orcontrol signaling received from a network management system.

The PE router 400 of FIG. 4 further includes an example flowspec NLRIadvertiser 415 to advertise flowspec NLRI data that provides flowspecification information for destination addresses reachable via the PErouter 400. The flowspec NLRI data advertised by the flowspec NLRIadvertiser 415 also includes, if available, the QoS class obtained bythe QoS classifier 410 for the network flow identified in a particularflowspec NLRI advertisement. For example, and with reference to FIGS. 1and 2, the flowspec NLRI advertiser 415 can advertise the flowspec NLRIdata with QoS class information in a routing message, such as a BGPUPDATE message or any other type of message for providing routinginformation.

In addition to advertising flowspec NLRI data with QoS class informationto upstream routers, the PE router 400 also receives flowspec NLRI datawith QoS class information from downstream routers (which may be thesame as, or different from, the upstream routers) to enable the PErouter 400 to route data to destinations that are reachable via thedownstream routers. As such, the PE router 400 includes an examplerouting information storage 420 to store routing information (e.g., inthe form of a routing information database) that includes the receivedflowspec NLRI data and associated QoS information, as well as theflowspec NLRI data and associated QoS information advertised by the PErouter 400. The routing information storage 420 can be implemented byany type or combination of temporary and/or permanent tangible storagemedia, such as one or more of cache, volatile memory, flash memory, diskstorage, etc., including but not limited to one or more of the massstorage devices 1128 and/or volatile memory 1114 in the exampleprocessing system 1100 of FIG. 11, which is described in greater detailbelow.

To filter received network packets for proper QoS treatment, the PErouter 400 of FIG. 4 includes an example packet filter 425. In theillustrated example, the packet filter 425 uses the flowspec NLRI dataadvertised/propagated from the downstream routers (and which is storedin the routing information storage 420) to configure the packet filter425 (e.g., as described above in connection with FIGS. 1 and 2) todetermine whether a received network packet is associated with a networkflow for which a QoS class has been received. During operation, and withreference to FIGS. 1 and 3, the packet filter 425 may compare thedestination address and protocol type of a received network packet withthe destination prefix(es) (or address(es)) and protocol type(s)identified in the previously received flowspec NLRI data. If a match isfound, the packet filter 425 determines that the received network packetis associated with the network flow identified by the matchingdestination prefix (or address) and protocol type, and furtherassociates the network packet with a QoS class identified in thereceived flowspec NLRI data as being specified for the matching networkflow. In some examples, if no match is found, the packet filter 425associates the received network packet with a default QoS, such as abest-effort QoS. In some examples, different default QoS classes may beused for different types of network packets. For example, the packetfilter 425 may be configured to select a particular default QoS classbased on the protocol type (and/or some other characteristic) of thereceived network packet.

To provide proper QoS treatment of received network packets, the PErouter 400 of FIG. 4 also includes an example packet updater 430. In theillustrated example, the packet updater 430 updates a received networkpacket to include a value (e.g., in a bit field of the packet's header)that represents the QoS class for the received packet (e.g., asidentified by the packet filter 425 using QoS class information includedwith previously received flowspec NLRI data). For example, if thereceived network packet is an IPV4 or IPV6 packet, the packet filter 425may set the DSCP or TOS bits of the network packet to a valuerepresentative of the packet's QoS class in the autonomous network towhich the PE router 400 belongs. In some examples, if the receivednetwork packet is an MPLS packet, the packet filter 425 may set the EXPbits of the network packet to a value representative of the packet's QoSclass in the autonomous network to which the PE router 400 belongs. Asnoted above, in some examples, different autonomous networks may usedifferent values to represent the same QoS class.

In some examples, the PE router 400 further includes one or more examplerouting queues 435 to store and forward packets having different QoSclasses. In such examples, the packet filter 425 may send or otherwiseprovide a received network packet to a particular one of the routingqueues 435 based on the QoS class for the received packet (e.g., asidentified by the packet filter 425 using QoS class information includedwith previously received flowspec NLRI data). For example, the PE router400 may include a first routing queue 435 to store and forward packetshaving a real-time QoS, a second routing queue 435 to store and forwardpackets having a best-effort QoS, etc. In such examples, the PE router400 may transmit (e.g., via the network transceiver 405) the packets indifferent queues 435 at different rates commensurate with the QoSassociated with the different queues 435.

A block diagram of an example IGR 500 that may be used to implement theIGRs 120A, 120B1, 120B2 and/or 120C of FIGS. 1-3 is illustrated in FIG.5. The IGR 500 of FIG. 5 includes an example network transceiver 505(which may be similar to the network transceiver 405 of FIG. 4) to sendand receive data via a communication network, such as the autonomousnetworks 105A, 105B and/or 105C. As such, the network transceiver 505can be implemented by any type of data transceiver technology capable ofinterfacing with the communication network via which the IGR 500 is tosend and receive data.

The IGR 500 of FIG. 5 also includes an example flowspec NLRI propagator515 to propagate flowspec NLRI data, including QoS class information,received from other network elements (e.g., such as one or more of thePE routers 110A and 110C, and/or one or more of the IGRs 120A, 120B1,120B2 and/or 120C). For example, with reference to FIGS. 1 and 2, theIGR 500 may receive (e.g., via the network transceiver 505) flowspecNLRI data, including QoS class information, from one or more downstreamrouters in one or more routing message, and then forward this receivedflowspec NLRI data, including the QoS class information, to one or moreupstream (e.g., next-hop) routers. The routing update messages may beimplemented by BGP UPDATE messages or any other type of message forproviding routing information.

In the illustrated example of FIG. 5, the IGR 500 includes an examplerouting information storage 520 (which may be similar to the routinginformation storage 420 of FIG. 4) to store routing information (e.g.,in the form of a routing information database) that includes thereceived flowspec NLRI data and associated QoS information. The routinginformation storage 520 can be implemented by any type or combination oftemporary and/or permanent tangible storage media, such as one or moreof cache, volatile memory, flash memory, disk storage, etc., includingbut not limited to one or more of the mass storage devices 1128 and/orvolatile memory 1114 in the example processing system 1100 of FIG. 11,which is described in greater detail below.

To filter received network packets for proper QoS treatment, the IGR 500of FIG. 5 includes an example packet filter 525 (which may be similar tothe packet filer 425 of FIG. 4). In the illustrated example, the packetfilter 525 uses the flowspec NLRI data advertised/propagated from thedownstream routers (and which is stored in the routing informationstorage 520) to configure the packet filter 525 (e.g., as describedabove in connection with FIGS. 1 and 2) to determine whether a receivednetwork packet is associated with a network flow for which a QoS classhas been received. During operation, and with reference to FIGS. 1 and3, the packet filter 525 may compare the destination address andprotocol type of a received network packet with the destination prefixes(or addresses) and protocol types identified in the previously receivedflowspec NLRI data. If a match is found, the packet filter 525determines that the received network packet is associated with thenetwork flow identified by the matching destination prefix (or address)and protocol type, and further associates the network packet with a QoSclass identified in the received flowspec NLRI data as being specifiedfor the matching network flow. In some examples, if no match is found,the packet filter 525 associates the received network packet with adefault QoS, such as a best-effort QoS. In some examples, differentdefault QoS classes may be used for different types of network packets.For example, the packet filter 525 may be configured to select aparticular default QoS class based on the protocol type (and/or someother characteristic) of the received network packet.

To provide proper QoS treatment of received network packets, the IGR 500of FIG. 5 also includes an example packet updater 530 (which may besimilar to the packet updater 430 of FIG. 4). In the illustratedexample, the packet updater 530 updates a received network packet toinclude a value (e.g., in a bit field of the packet's header) thatrepresents the QoS class for the received packet (e.g., as identified bythe packet filter 525 using QoS class information included withpreviously received flowspec NLRI data). For example, if the receivednetwork packet is an IPV4 or IPV6 packet, the packet filter 525 may setthe DSCP or TOS bits of the network packet to a value representative ofthe packet's QoS class in the autonomous network to which the IGR 500belongs. In some examples, if the received network packet is an MPLSpacket, the packet filter 525 may set the EXP bits of the network packetto a value representative of the packet's QoS class in the autonomousnetwork to which the IGR 500 belongs. As noted above, in some examples,different autonomous networks may use different values to represent thesame QoS class.

In some examples, the IGR 500 further includes one or more examplerouting queues 535 (which may be similar to the routing queue(s) 435 ofFIG. 4) to store and forward packets having different QoS classes. Insuch examples, the packet filter 525 may send or otherwise provide areceived network packet to a particular one of the routing queues 535based on the QoS class for the received packet (e.g., as identified bythe packet filter 525 using QoS class information included withpreviously received flowspec NLRI data). For example, the IGR 500 mayinclude a first routing queue 535 to store and forward packets having areal-time QoS, a second routing queue 535 to store and forward packetshaving a best-effort QoS, etc. In such examples, the IGR 500 maytransmit (e.g., via the network transceiver 505) the packets indifferent queues 535 at different rates commensurate with the QoSassociated with the different queues 535.

While example manners of implementing the communication network 100 havebeen illustrated in FIGS. 1-5, one or more of the elements, processesand/or devices illustrated in FIGS. 1-5 may be combined, divided,re-arranged, omitted, eliminated and/or implemented in any other way.Further, the example autonomous networks 105A, 105B and/or 105C, theexample PE routers 110A and/or 110C, the example border elements 115Aand/or 115C, the example IGRs 120A, 120B1, 120B2 and/or 120C, theexample PE router 400, the example network transceiver 405, the exampleQoS classifier 410, the example flowspec NLRI advertiser 415, theexample routing information storage 420, the example packet filter 425,the example packet updater 430, the example routing queue(s) 435, theexample IGR 500, the example network transceiver 505, the exampleflowspec NLRI propagator 515, the example routing information storage520, the example packet filter 525, the example packet updater 530, theexample routing queue(s) 535 and/or, more generally, the examplecommunication network 100 of FIGS. 1-5 may be implemented by hardware,software, firmware and/or any combination of hardware, software and/orfirmware. Thus, for example, any of the example autonomous networks105A, 105B and/or 105C, the example PE routers 110A and/or 110C, theexample border elements 115A and/or 115C, the example IGRs 120A, 120B1,120B2 and/or 120C, the example PE router 400, the example networktransceiver 405, the example QoS classifier 410, the example flowspecNLRI advertiser 415, the example routing information storage 420, theexample packet filter 425, the example packet updater 430, the examplerouting queue(s) 435, the example IGR 500, the example networktransceiver 505, the example flowspec NLRI propagator 515, the examplerouting information storage 520, the example packet filter 525, theexample packet updater 530, the example routing queue(s) 535 and/or,more generally, the example communication network 100 could beimplemented by one or more circuit(s), programmable processor(s),application specific integrated circuit(s) (ASIC(s)), programmable logicdevice(s) (PLD(s)) and/or field programmable logic device(s) (FPLD(s)),etc. When any of the apparatus or system claims of this patent are readto cover a purely software and/or firmware implementation, at least oneof the example communication network 100, the example autonomousnetworks 105A, 105B and/or 105C, the example PE routers 110A and/or110C, the example border elements 115A and/or 115C, the example IGRs120A, 120B1, 120B2 and/or 120C, the example PE router 400, the examplenetwork transceiver 405, the example QoS classifier 410, the exampleflowspec NLRI advertiser 415, the example routing information storage420, the example packet filter 425, the example packet updater 430, theexample routing queue(s) 435, the example IGR 500, the example networktransceiver 505, the example flowspec NLRI propagator 515, the examplerouting information storage 520, the example packet filter 525, theexample packet updater 530 and/or the example routing queue(s) 535 arehereby expressly defined to include a tangible computer readable mediumsuch as a memory, digital versatile disk (DVD), compact disk (CD),Blu-ray Disc™, etc., storing such software and/or firmware. Furtherstill, the example communication network 100 of FIGS. 1-5 may includeone or more elements, processes and/or devices in addition to, orinstead of, those illustrated in FIGS. 1-5, and/or may include more thanone of any or all of the illustrated elements, processes and devices.

Flowcharts representative of example machine readable instructions forimplementing the example communication network 100, the exampleautonomous networks 105A, 105B and/or 105C, the example PE routers 110Aand/or 110C, the example border elements 115A and/or 115C, the exampleIGRs 120A, 120B1, 120B2 and/or 120C, the example PE router 400, theexample network transceiver 405, the example QoS classifier 410, theexample flowspec NLRI advertiser 415, the example routing informationstorage 420, the example packet filter 425, the example packet updater430, the example routing queue(s) 435, the example IGR 500, the examplenetwork transceiver 505, the example flowspec NLRI propagator 515, theexample routing information storage 520, the example packet filter 525,the example packet updater 530 and/or the example routing queue(s) 535are shown in FIGS. 6-10. In these examples, the machine readableinstructions represented by each flowchart may comprise one or moreprograms for execution by a processor, such as the processor 1112 shownin the example processing system 1100 discussed below in connection withFIG. 11. Furthermore, as used herein, references to a processor thatexecutes instructions to perform operations may mean that the processoritself performs the operations or that the processor instructs ordirects another element of an apparatus to perform the operations. Theone or more programs, or portion(s) thereof, may be embodied in softwarestored on a tangible computer readable storage medium such as a CD-ROM,a floppy disk, a hard drive, a digital versatile disk (DVD), a Blu-rayDisc™ or a memory associated with the processor 1112, but the entireprogram or programs and/or portions thereof could alternatively beexecuted by a device other than the processor 1112 (e.g., such as acontroller and/or any other suitable device) and/or embodied in firmwareor dedicated hardware (e.g., implemented by an ASIC, a PLD, an FPLD,discrete logic, etc.). Also, one or more of the machine readableinstructions represented by the flowchart of FIGS. 6-10 may beimplemented manually. Further, although the example machine readableinstructions are described with reference to the flowcharts illustratedin FIGS. 6-10, many other methods of implementing the examplecommunication network 100, the example autonomous networks 105A, 105Band/or 105C, the example PE routers 110A and/or 110C, the example borderelements 115A and/or 115C, the example IGRs 120A, 120B1, 120B2 and/or120C, the example PE router 400, the example network transceiver 405,the example QoS classifier 410, the example flowspec NLRI advertiser415, the example routing information storage 420, the example packetfilter 425, the example packet updater 430, the example routing queue(s)435, the example IGR 500, the example network transceiver 505, theexample flowspec NLRI propagator 515, the example routing informationstorage 520, the example packet filter 525, the example packet updater530 and/or the example routing queue(s) 535 may alternatively be used.For example, with reference to the flowcharts illustrated in FIGS. 6-10the order of execution of the blocks may be changed, and/or some of theblocks described may be changed, eliminated, combined and/or subdividedinto multiple blocks.

As mentioned above, the example processes of FIGS. 6-10 may beimplemented using coded instructions (e.g., computer readableinstructions) stored on a tangible computer readable storage medium suchas a hard disk drive, a flash memory, a read-only memory (ROM), a CD, aDVD, a cache, a random-access memory (RAM) and/or any other storagemedia in which information is stored for any duration (e.g., forextended time periods, permanently, brief instances, for temporarilybuffering, and/or for caching of the information). As used herein, theterm tangible computer readable storage medium is expressly defined toinclude any type of computer readable storage device and/or storagedisk, and to exclude propagating signals. Additionally or alternatively,the example processes of FIGS. 6-10 may be implemented using codedinstructions (e.g., computer readable instructions) stored on anon-transitory computer readable medium, such as a flash memory, a ROM,a CD, a DVD, a cache, a random-access memory (RAM) and/or any otherstorage media in which information is stored for any duration (e.g., forextended time periods, permanently, brief instances, for temporarilybuffering, and/or for caching of the information). As used herein, theterm non-transitory computer readable medium is expressly defined toinclude any type of computer readable storage device and/or storagedisk, and to exclude propagating signals. Also, as used herein, theterms “computer readable” and “machine readable” are consideredequivalent unless indicated otherwise. Furthermore, as used herein, whenthe phrase “at least” is used as the transition term in a preamble of aclaim, it is open-ended in the same manner as the term “comprising” isopen ended. Thus, a claim using “at least” as the transition term in itspreamble may include elements in addition to those expressly recited inthe claim.

Example machine readable instructions 600 that may be executed toimplement flowspec NLRI advertisement processing in the example PErouter 400 of FIG. 4 are represented by the flowchart shown in FIG. 6.For convenience, and without loss of generality, execution of themachine readable instructions 600 is described from the perspective ofthe PE router 400 being used to implement the example PE router 110C inthe example communication system 100. With reference to the precedingfigures and associated descriptions, the machine readable instructions600 of FIG. 6 begin execution at block 605 at which the QoS classifier410 of the PE router 400 obtains, as described above, one or more QoSclasses for one or more respective network flows that are receivable bya network element, such as the border element 115C, served by the PErouter 400. At block 610, the flowspec NLRI advertiser 415 of the PErouter 400 prepares flowspec NLRI data identifying the network flow(s)(e.g., by destination prefix/addresses and protocol types) that arereachable via the PE router 400, such as those network flow(s)identified at block 605, as described above. In the illustrated example,the flowspec NLRI advertiser 415 also includes QoS class information(e.g., obtained at block 605) with the flowspec NLRI data prepared atblock 610 for network flow(s), as described above. At block 615, theflowspec NLRI advertiser 415 advertises, via one or more routingmessages as described above, the flowspec NLRI data, with the QoSclass(es) specified for the identified network flow(s), to one or moreupstream (e.g., next hop) routers, such as the IGR 120C in thecommunication network 100.

Example machine readable instructions 700 that may be executed toprocess received flowspec NLRI data including QoS information in theexample PE router 400 of FIG. 4 are represented by the flowchart shownin FIG. 7. For convenience, and without loss of generality, execution ofthe machine readable instructions 700 is described from the perspectiveof the PE router 400 being used to implement the example PE router 110Ain the example communication system 100. With reference to the precedingfigures and associated descriptions, the machine readable instructions700 of FIG. 7 begin execution at block 705 at which the PE router 400receives (e.g., via the network transceiver 405 of the PE router 400)flowspec NLRI data, including QoS information for the flow identified inthe NLRI data, that was advertised by a downstream router, such as thePE router 110C, as described above. At block 710, the PE router 400constructs a packet filter for the network flow identified in theflowspec NLRI data received at block 705 by, for example, configuringthe packet filter 425 of the PE router 400 to recognize the network flowidentified in the flowspec NLRI data received at block 705 (e.g., basedon destination prefix/addresses and protocol type) and to associatematching network packets with the QoS class specified in the receivedflowspec NLRI data for this network flow. At block 715, the PE router400 updates the routing information stored in the routing informationstorage 420 to contain the flowspec NLRI, including QoS classinformation, received at block 705 and the packet filter configurationinformation determined at block 710.

Example machine readable instructions 800 that may be executed toperform network packet routing in the example PE router 400 of FIG. 4are represented by the flowchart shown in FIG. 8. For convenience, andwithout loss of generality, execution of the machine readableinstructions 800 is described from the perspective of the PE router 400being used to implement the example PE router 110A in the examplecommunication system 100. With reference to the preceding figures andassociated descriptions, the machine readable instructions 800 of FIG. 8begin execution at block 805 at which the PE router 400 receives (e.g.,via the network transceiver 405 of the PE router 400) a network packetto be routed to a downstream destination. At block 810, the packetfilter 425 of the PE router 400 performs packet filtering, as describedabove, on the received network packet using the available flowspec NLRIdata stored in the routing information storage 420 to determine the QoSclass specified for the received network packet. As described above, insome examples, the packet filter 425 may associate a default QoS classwith the received network packet if the packet does not match a networkflow for which flowspec NLRI data was received, or if the flowspec NLRIdata did not include a QoS class specification.

At block 815, the packet updater 430 of the PE router 400 updates, asdescribed above, the QoS bits in the received network packet to have avalue that is used to represent the packet's determined QoS class in theautonomous network (e.g., the autonomous network 105A) to which the PErouter 400 belongs. At block 820, the packet filter 425 assigns, asdescribed above, the network packet to a particular one of the routingqueues 435 of the PE router 400 that is associated with the packet'sdetermined QoS class. At block 825, the PE router 400 routes the networkpacket from its assigned queue 435 towards its destination.

For convenience, the example machine readable instructions 600, 700 and800 have each been described from the perspective of being implementedby the PE router 400 when being used to implement different ones of thePE routers 110A and 110C. However, in many practical examples, eachsingle PE router in the example communication system 100 implements(e.g., in separate processing threads) each of the example machinereadable instructions 600, 700 and 800.

Example machine readable instructions 900 that may be executed toprocess received flowspec NLRI data including QoS information in theexample IGR 500 of FIG. 5 are represented by the flowchart shown in FIG.9. For convenience, and without loss of generality, execution of themachine readable instructions 900 is described from the perspective ofthe IGR 500 being used to implement the example IGR 120C in the examplecommunication system 100. With reference to the preceding figures andassociated descriptions, the machine readable instructions 900 of FIG. 9begin execution at block 905 at which the IGR 500 receives (e.g., viathe network transceiver 505 of the IGR 500) flowspec NLRI data,including QoS information for the flow identified in the NLRI data, thatwas originally advertised by destination router, such as the PE router110C, as described above. At block 910, the IGR 500 constructs a packetfilter for the network flow identified in the flowspec NLRI datareceived at block 905 by, for example, configuring the packet filter 525of the IGR 500 to recognize the network flow identified in the flowspecNLRI data received at block 905 (e.g., based on destinationprefix/address and protocol type) and to associate matching networkpackets with the QoS class specified in the received flowspec NLRI datafor this network flow. At block 915, the IGR 500 updates the routinginformation stored in the routing information storage 520 to contain theflowspec NLRI, including QoS class information, received at block 905and the packet filter configuration information determined at block 910.At block 920, the flowspec NLRI propagator 515 of the IGR 500propagates, via one or more routing messages as described above, theflowspec NLRI data, including QoS information, received at block 905 toone or more upstream routers, such as the router 120B2, as describedabove.

Example machine readable instructions 1000 that may be executed toperform network packet routing in the example IGR 500 of FIG. 5 arerepresented by the flowchart shown in FIG. 10. For convenience, andwithout loss of generality, execution of the machine readableinstructions 1000 is described from the perspective of the IGR 500 beingused to implement the example IGR 120A in the example communicationsystem 100. With reference to the preceding figures and associateddescriptions, the machine readable instructions 1000 of FIG. 10 beginexecution at block 1005 at which the IGR 500 receives (e.g., via thenetwork transceiver 505 of the IGR 500) a network packet to be routed toa downstream destination. At block 1010, the packet filter 525 of theIGR 500 performs packet filtering, as described above, on the receivednetwork packet using the available flowspec NLRI data stored in therouting information storage 520 to determine the QoS class specified forthe received network packet. As described above, in some examples, thepacket filter 525 may associate a default QoS class with the receivednetwork packet if the packet does not match a network flow for whichflowspec NLRI data was received, or if the flowspec NLRI data did notinclude a QoS class specification.

At block 1015, the packet updater 530 of the IGR 500 updates, asdescribed above, the QoS bits in the received network packet to have avalue that is used to represent the packet's determined QoS class in theautonomous network (e.g., the autonomous network 105A) to which the IGR500 belongs. At block 1020, the packet filter 525 assigns, as describedabove, the network packet to a particular one of the routing queues 535of the IGR 500 that is associated with the packet's determined QoSclass. At block 1025, the IGR 500 routes the network packet from itsassigned queue 535 towards its destination.

For convenience, the example machine readable instructions 900 and 1000have each been described from the perspective of being implemented bythe IGR 500 when being used to implement different ones of the IGRs 120Aand 120C. However, in many practical examples, each IGR in the examplecommunication system 100 implements (e.g., in separate processingthreads) each of the example machine readable instructions 900 and 1000.

FIG. 11 is a block diagram of an example processing system 1100 capableof executing the instructions of FIGS. 6-10 to implement the examplecommunication network 100, the example autonomous networks 105A, 105Band/or 105C, the example PE routers 110A and/or 110C, the example borderelements 115A and/or 115C, the example IGRs 120A, 120B1, 120B2 and/or120C, the example PE router 400, the example network transceiver 405,the example QoS classifier 410, the example flowspec NLRI advertiser415, the example routing information storage 420, the example packetfilter 425, the example packet updater 430, the example routing queue(s)435, the example IGR 500, the example network transceiver 505, theexample flowspec NLRI propagator 515, the example routing informationstorage 520, the example packet filter 525, the example packet updater530 and/or the example routing queue(s) 535 of FIGS. 1-5. The processingsystem 1100 can be, for example, a router, a gateway, a networkcontroller, a server, a personal computer, a mobile device (e.g., asmartphone, a cell phone, etc.), an Internet appliance, or any othertype of computing device.

The system 1100 of the instant example includes a processor 1112. Forexample, the processor 1112 can be implemented by one or moremicroprocessors and/or controllers from any desired family ormanufacturer.

The processor 1112 includes a local memory 1113 (e.g., a cache) and isin communication with a main memory including a volatile memory 1114 anda non-volatile memory 1116 via a link 1118. The link 1518 may beimplemented by a bus, one or more point-to-point connections, etc., or acombination thereof. The volatile memory 1114 may be implemented byStatic Random Access Memory (SRAM), Synchronous Dynamic Random AccessMemory (SDRAM), Dynamic Random Access Memory (DRAM), RAMBUS DynamicRandom Access Memory (RDRAM) and/or any other type of random accessmemory device. The non-volatile memory 1116 may be implemented by flashmemory and/or any other desired type of memory device. Access to themain memory 1114, 1116 is controlled by a memory controller.

The processing system 1100 also includes an interface circuit 1120. Theinterface circuit 1120 may be implemented by any type of interfacestandard, such as an Ethernet interface, a universal serial bus (USB),and/or a PCI express interface.

One or more input devices 1122 are connected to the interface circuit1120. The input device(s) 1122 permit a user to enter data and commandsinto the processor 1112. The input device(s) can be implemented by, forexample, a keyboard, a mouse, a touchscreen, a track-pad, a trackball, atrackbar (such as an isopoint), a voice recognition system and/or anyother human-machine interface.

One or more output devices 1124 are also connected to the interfacecircuit 1120. The output devices 1124 can be implemented, for example,by display devices (e.g., a liquid crystal display, a cathode ray tubedisplay (CRT)), a printer and/or speakers. The interface circuit 1120,thus, typically includes a graphics driver card.

The interface circuit 1120 also includes a communication device, such asa modem or network interface card, to facilitate exchange of data withexternal computers via a network 1126 (e.g., an Ethernet connection, adigital subscriber line (DSL), a telephone line, coaxial cable, acellular telephone system, etc.).

The processing system 1100 also includes one or more mass storagedevices 1128 for storing machine readable instructions and data.Examples of such mass storage devices 1128 include floppy disk drives,hard drive disks, compact disk drives and digital versatile disk (DVD)drives. In some examples, the mass storage device 1130 may implement therouting information storage 420 and/or 520. Additionally oralternatively, in some examples the volatile memory 1118 may implementthe routing information storage 420 and/or 520.

Coded instructions 1132 corresponding to the instructions of FIGS. 6-10may be stored in the mass storage device 1128, in the volatile memory1114, in the non-volatile memory 1116, in the local memory 1113 and/oron a removable storage medium, such as a CD or DVD 1136.

At least some of the above described example methods and/or apparatusare implemented by one or more software and/or firmware programs runningon a computer processor. However, dedicated hardware implementationsincluding, but not limited to, application specific integrated circuits,programmable logic arrays and other hardware devices can likewise beconstructed to implement some or all of the example methods and/orapparatus described herein, either in whole or in part. Furthermore,alternative software implementations including, but not limited to,distributed processing or component/object distributed processing,parallel processing, or virtual machine processing can also beconstructed to implement the example methods and/or apparatus describedherein.

To the extent the above specification describes example components andfunctions with reference to particular standards and protocols, it isunderstood that the scope of this patent is not limited to suchstandards and protocols. For instance, each of the standards forInternet and other packet switched network transmission (e.g.,Transmission Control Protocol (TCP)/Internet Protocol (IP), UserDatagram Protocol (UDP)/IP, HyperText Markup Language (HTML), HyperTextTransfer Protocol (HTTP)) represent examples of the current state of theart. Such standards are periodically superseded by faster or moreefficient equivalents having the same general functionality.Accordingly, replacement standards and protocols having the samefunctions are equivalents which are contemplated by this patent and areintended to be included within the scope of the accompanying claims.

Additionally, although this patent discloses example systems includingsoftware or firmware executed on hardware, it should be noted that suchsystems are merely illustrative and should not be considered aslimiting. For example, it is contemplated that any or all of thesehardware and software components could be embodied exclusively inhardware, exclusively in software, exclusively in firmware or in somecombination of hardware, firmware and/or software. Accordingly, whilethe above specification described example systems, methods and articlesof manufacture, the examples are not the only way to implement suchsystems, methods and articles of manufacture. Therefore, althoughcertain example methods, apparatus and articles of manufacture have beendescribed herein, the scope of coverage of this patent is not limitedthereto. On the contrary, this patent covers all methods, apparatus andarticles of manufacture fairly falling within the scope of the claimseither literally or under the doctrine of equivalents.

What is claimed is:
 1. A method to specify quality of service fornetwork flows, the method comprising: accessing, by a system including aprocessor, a flow specification and a first quality of service classthat has been advertised by a first network element that is to receive afirst network flow; constructing, by the system, a packet filter basedon the flow specification and the first quality of service class thatfilters received packets for the first network flow; in response todetermining that an incoming packet belongs to the first network flow,adjusting, by the system and based on the packet filter, bits in theincoming packet from a first value representing the first quality ofservice class in a first autonomous system from which the incomingpacket was received to a different, second value representing the samefirst quality of service class in a second autonomous system in whichthe incoming packet is to be routed, wherein the adjusting of the bitsgenerates an updated incoming packet, and wherein the incoming packet isreceived from a second network element; assigning, by the system, theupdated incoming packet to a first routing queue corresponding to thefirst quality of service class; and routing, by the system, the updatedincoming packet from the first routing queue towards the first networkelement.
 2. The method of claim 1, further comprising receiving, by thesystem, a border gateway protocol update message that includes the flowspecification and the first quality of service class.
 3. The method ofclaim 1, further comprising receiving, by the system, a destinationprefix and a protocol type to identify the first network flow, thedestination prefix representing a network address that is reachable fromthe first network element.
 4. The method of claim 3, wherein the firstnetwork element comprises a first provider edge router, and the networkaddress represented by the destination prefix is associated with a firstnetwork border element that is reachable via the first provider edgerouter and servicing a first group of network endpoints that is toreceive the first network flow.
 5. The method of claim 4, wherein thefirst quality of service class is specified for the first network flowwhen the first network border element is homed to the first provideredge router.
 6. The method of claim 1, wherein the first network elementbelongs to the second autonomous network, the second network elementbelongs to the first autonomous system, and the incoming packet isreceived from the second network element at a third network elementbelonging to the second autonomous system.
 7. A non-transitorymachine-readable storage medium, comprising executable instructionsthat, when executed by a processor, facilitate performance ofoperations, comprising: constructing a packet filter based on a flowspecification and a first quality of service class that filters receivedpackets for a first network flow; in response to determining that anincoming packet belongs to the first network flow, adjusting bits in theincoming packet from a first value representing the first quality ofservice class in a first autonomous system from which the incomingpacket was received to a different, second value representing the samefirst quality of service class in a second autonomous system in whichthe incoming packet is to be routed, wherein the adjusting of the bitsgenerates an updated incoming packet, and wherein the incoming packet isreceived from a second network element; assigning the updated incomingpacket to a first routing queue corresponding to the first quality ofservice class; and routing the updated incoming packet from the firstrouting queue towards a first network element.
 8. The non-transitorymachine-readable storage medium of claim 7, wherein the flowspecification and the first quality of service class has been advertisedby the first network element that is to receive the first network flow,and wherein the processor comprises multiple processors that operate ina distributed processing environment.
 9. The non-transitorymachine-readable storage medium of claim 7, wherein the operationsfurther comprise receiving a border gateway protocol update message thatincludes the flow specification and the first quality of service class.10. The non-transitory machine-readable storage medium of claim 7,wherein the operations further comprise receiving a destination prefixand a protocol type to identify the first network flow, the destinationprefix representing a network address that is reachable from the firstnetwork element.
 11. The non-transitory machine-readable storage mediumof claim 10, wherein the first network element comprises a firstprovider edge router, and the network address represented by thedestination prefix is associated with a first network border elementthat is reachable via the first provider edge router and servicing afirst group of network endpoints that is to receive the first networkflow.
 12. The non-transitory machine-readable storage medium of claim11, wherein the first quality of service class is specified for thefirst network flow when the first network border element is homed to thefirst provider edge router.
 13. The non-transitory machine-readablestorage medium of claim 7, wherein the first network element belongs tothe second autonomous system, the second network element belongs to thefirst autonomous network, and the incoming packet is received from thesecond network element at a third network element belonging to thesecond autonomous system.
 14. A first network element, comprising: amemory that stores executable instructions; and a processorcommunicatively coupled to the memory, wherein the processor, responsiveto executing the executable instructions, performs operationscomprising: providing, to a system, network layer reachabilityinformation including a flow specification and a first quality ofservice class specified for a first network flow that is to be receivedby the first network element; and receiving an updated incoming packetvia routing by the system from a first routing queue, wherein therouting of the updated incoming packet comprises: determining that anincoming packet belongs to the first network flow, and adjusting bits inthe incoming packet from a first value representing the first quality ofservice class in a first autonomous system from which the incomingpacket was received to a different, second value representing the samefirst quality of service class in a second autonomous system in whichthe incoming packet is to be routed, wherein the adjusting of the bitsgenerates the updated incoming packet, wherein the incoming packet isreceived from a second network element, and wherein the updated incomingpacket is assigned to the first routing queue corresponding to the firstquality of service class.
 15. The first network element of claim 14,wherein the operations further comprise receiving a border gatewayprotocol update message that includes the flow specification and thefirst quality of service class.
 16. The first network element of claim14, wherein the operations further comprise receiving a destinationprefix and a protocol type to identify the first network flow, thedestination prefix representing a network address that is reachable fromthe first network element.
 17. The first network element of claim 16,wherein the first network element comprises a first provider edgerouter, and the network address represented by the destination prefix isassociated with a first network border element that is reachable via thefirst provider edge router and servicing a first group of networkendpoints that is to receive the first network flow.
 18. The firstnetwork element of claim 17, wherein the first quality of service classis specified for the first network flow when the first network borderelement is homed to the first provider edge router.
 19. The firstnetwork element of claim 14, wherein the first network element belongsto the second autonomous network, the second network element belongs tothe first autonomous system, and the incoming packet is received fromthe second network element at a third network element belonging to thesecond autonomous system.
 20. The first network element of claim 14,wherein the processor comprises multiple processors that operate in adistributed processing environment.